!function () {
    //default values
    let defaultOptions = {
        countable: true,
        position: "top",
        margin: "10px",
        float: "right",
        fontsize: "0.9em",
        color: "rgb(90,90,90)",
        language: "english",
        isExpected: true,
        zIndex: 999,
    }

// Docsify plugin functions
    function plugin(hook, vm) {
        if (!defaultOptions.countable) {
            return
        }
        let wordsCount
        hook.beforeEach(function (content) {
            // Match regex every time you start parsing .md
            wordsCount = content.match(/([\u4e00-\u9fa5]+?|[a-zA-Z0-9]+)/g).length
            return content
        })
        hook.afterEach(function (html, next) {
            let str = wordsCount + " words"
            let readTime = Math.ceil(wordsCount / 400) + " min"
            //Determine whether to use the Chinese style according to the attribute "language"
            if (defaultOptions.language === "chinese") {
                str = "共 " + wordsCount + " 字"
                readTime = "约 " + Math.ceil(wordsCount / 400) + " 分钟"
            }

            //add html string
            next(
                `
        ${defaultOptions.position === "bottom" ? html : ""}
        <div style="margin-${defaultOptions.position ? "bottom" : "top"}: ${
                    defaultOptions.margin
                };" class="countable">
            <span style="
                  float: ${defaultOptions.float === "right" ? "right" : "left"};
                  font-size: ${defaultOptions.fontsize};
                  color:${defaultOptions.color};
                  z-index: ${defaultOptions.zIndex};
                  background-color: white;">
            ${str}
            ${defaultOptions.isExpected ? `&nbsp; | &nbsp;${readTime}` : ""}
            </span>
            <div style="clear: both"></div>
        </div>
        ${defaultOptions.position !== "bottom" ? html : ""}
        `
            )
        })
    }

// Docsify plugin options
    window.$docsify["count"] = Object.assign(
        defaultOptions,
        window.$docsify["count"]
    )
    window.$docsify.plugins = [].concat(plugin, window.$docsify.plugins)

}()